package com.chenfan.mcn.model.vo;

import com.chenfan.mcn.enums.ArchivingStatusEnum;
import com.chenfan.mcn.enums.CommonSettleStatusEnum;
import com.chenfan.mcn.enums.IncomeContractTypeEnum;
import com.chenfan.mcn.enums.OfflineCommissionSettleStatusEnum;
import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.Objects;

/**
 * @author tangwei
 * Date:     2021/1/21 11:02
 * Description: 收入合同列表
 */
@Data
public class IncomeContractListVO implements Serializable {

    private static final long serialVersionUID = 7149617261063430996L;

    /**
     * 收入合同ID
     */
    private Long id;

    /**
     * 合同编号
     */
    private String contractCode;

    /**
     * 合同类型
     */
    private Integer contractType;

    /**
     * 客户id
     */
    private Long customerId;

    /**
     * 客户名称
     */
    private String customerName;

    /**
     * 单据状态
     */
    private Integer approvalStatus;

    /**
     * 审批状态:
     */
    private String flowStatusName;

    /**
     * 我司合同主体(数据字典)
     */
    private String companyContractSubject;

    /**
     * 合同签订日期（精确到天）
     */
    private Date signDate;

    /**
     * 商务确认合同金额
     */
    private BigDecimal businessAmount;

    /**
     * 备注
     */
    private String remark;

    /**
     * 合作内容简介
     */
    private String cooperateContent;

    /**
     * 回款状态"0未回款；1部分回款；2已回款"
     */
    private Integer payBackStatus;

    /**
     * 回款金额
     */
    private BigDecimal payBackAmount;

    /**
     * 创建时间
     */
    private Date createDate;

    /**
     * 创建人名称
     */
    private String createName;

    /**
     * 创建人id
     */
    private Long createBy;

    /**
     * 数据所有人
     */
    private String ownerName;

    private Long flowId;

    /**
     * 合同类型名称
     */
    private String contractTypeName;
    /**
     * 是否归档(1-否，2-是)
     */
    private Integer isFile;

    public String getContractTypeName() {
        if (Objects.nonNull(getContractType())) {
            return IncomeContractTypeEnum.getContractTypeName(getContractType());
        }
        return null;
    }

    /**
     * 归档状态
     */
    private Integer archivingStatus;

    /**
     * 归档状态名称
     */
    private String archivingStatusName;

    public String getArchivingStatusName() {
        if (Objects.nonNull(getArchivingStatus())) {
            return ArchivingStatusEnum.getStatusName(getArchivingStatus());
        }
        return null;
    }

    /**
     * 归档编号
     */
    private String archivingCode;


    /**
     * 线下佣金-结算状态：0待结算、1结算中、2待回款、3部分回款、4已回款
     */
    private Integer offlineCommissionSettleStatus;

    /**
     * 线下佣金-结算状态：0待结算、1结算中、2待回款、3部分回款、4已回款
     */
    private String offlineCommissionSettleStatusName;

    /**
     *
     * @return
     */
    public String getOfflineCommissionSettleStatusName() {
        return OfflineCommissionSettleStatusEnum.getStatusName(this.getOfflineCommissionSettleStatus());
    }

    /**
     * 是否有参与保比的广告收入：0否1是
     */
    private Integer roiAdvAmtEquity;

    /**
     * 是否有不参与保比的广告收入：0否1是
     */
    private Integer noroiAdvAmtEquity;

    public String getCompanyContractSubject() {
        return companyContractSubject;
    }

    public Integer getRoiAdvAmtEquity() {
        if(IncomeContractTypeEnum.isLiveContract(this.getContractType())) {
            return roiAdvAmtEquity;
        }
        return null;
    }

    public Integer getNoroiAdvAmtEquity() {
        if(IncomeContractTypeEnum.isLiveContract(this.getContractType())) {
            return noroiAdvAmtEquity;
        }
        return null;
    }

    /**
     * 直播提成结算状态：0未结算 2已结算
     */
    private Integer liveCommissionSettleStatus;

    /**
     * 直播提成结算状态 翻译值
     */
    private String liveCommissionSettleStatusName;

    public String getLiveCommissionSettleStatusName() {
        return CommonSettleStatusEnum.getStatusName(this.liveCommissionSettleStatus);
    }

    /**
     * 钉钉合同审批编号
     */
    private String dingdingContractCode;
}